home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C++ / Applications / Nuntius 1.2 / src / Nuntius / UThreadLongJmp.h < prev    next >
Encoding:
Text File  |  1994-03-16  |  1.2 KB  |  55 lines  |  [TEXT/MPS ]

  1. // Copyright © 1993 Peter Speck (speck@dat.ruc.dk).  All rights reserved.
  2. // UThreadLongJmp.h
  3.  
  4. #ifndef __UTHREAD__
  5. #include "UThread.h"
  6. #endif
  7.  
  8. struct LongJmpBuf68000
  9. {
  10.     long D2, D3, D4, D5, D6, D7;
  11.     const void *PC;
  12.     long A2, A3, A4, A6;
  13.     long *SP;
  14.     long *fHeapEnd;
  15.     long *fApplLimit;
  16.     long *fHiHeapMark;
  17.     Ptr fStack, fStackTop;
  18.     long fID;
  19.     // This struct has ofcourse a _close_ relationship 
  20.     // to the asm i UThread.a
  21. };
  22.  
  23. extern "C" {
  24.     Boolean MySetJmp68000(LongJmpBuf68000 &);
  25.     void    MyLongJmp68000(LongJmpBuf68000 &, Ptr ptrToDispose);
  26. }
  27.  
  28. class TThreadLongJmp : public TThread
  29. {
  30.     public:
  31.         void StartThread(TCommand *cmd);
  32.         virtual void DumpDebugDescription();
  33.  
  34.         TThreadLongJmp();
  35.         virtual pascal void Initialize();
  36.         void IThreadLongJmp(Boolean isMainThread, const char *debugDoingWhat);
  37.         virtual void Die();
  38.         
  39.     protected:
  40.         virtual pascal void Free(); // virtual ~TThreadLongJmp();
  41.  
  42.         virtual void SwapThread();
  43.  
  44.     private:
  45.         LongJmpBuf68000 fLongJmpBuf;
  46.  
  47.         void ExecCmd(TCommand *cmd);
  48.         void SwapIn(Ptr ptrToDispose);
  49. };
  50.  
  51. Boolean HasThreadLongJmp();
  52. TThread *CreateMainThreadLongJmp();
  53.  
  54. TThread *ExecuteInNewThreadLongJmp(TCommand *command, const char *debugDoingWhat);
  55.